<?php
/**
 * 微信小程序Token验证处理
 * 用于验证微信服务器发送的验证请求
 * 
 * 数据格式：JSON (推荐)
 * - 更轻量级，传输更快
 * - PHP原生支持，解析简单
 * - 便于调试和维护
 */

// 直接设置Token，避免环境函数问题
$token = 'order2024token123';

// 获取微信发送的参数
$signature = $_GET['signature'] ?? '';
$timestamp = $_GET['timestamp'] ?? '';
$nonce = $_GET['nonce'] ?? '';
$echostr = $_GET['echostr'] ?? '';

// 记录验证请求日志
$log_data = [
    'time' => date('Y-m-d H:i:s'),
    'signature' => $signature,
    'timestamp' => $timestamp,
    'nonce' => $nonce,
    'echostr' => $echostr,
    'token' => $token
];

// 写入日志文件
$log_file = __DIR__ . '/../storage/logs/wechat_verify.log';
$log_dir = dirname($log_file);
if (!is_dir($log_dir)) {
    mkdir($log_dir, 0755, true);
}
file_put_contents($log_file, json_encode($log_data, JSON_UNESCAPED_UNICODE) . "\n", FILE_APPEND);

// 验证签名
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);

// 调试信息 - 记录到日志
$debug_info = [
    'token' => $token,
    'timestamp' => $timestamp,
    'nonce' => $nonce,
    'sorted_array' => $tmpArr,
    'tmp_str' => $tmpStr,
    'expected_signature' => $tmpStr,
    'actual_signature' => $signature
];
file_put_contents($log_file, "DEBUG: " . json_encode($debug_info, JSON_UNESCAPED_UNICODE) . "\n", FILE_APPEND);

// 设置响应头 - 微信验证需要纯文本响应
header('Content-Type: text/plain; charset=utf-8');

// 验证结果
if ($tmpStr == $signature) {
    // 验证成功 - 直接返回echostr，不要JSON格式
    echo $echostr;
    error_log("微信Token验证成功: " . $echostr);
} else {
    // 验证失败
    http_response_code(403);
    echo "验证失败";
    error_log("微信Token验证失败: 期望签名=" . $tmpStr . ", 实际签名=" . $signature);
}
